package com.crm.dao.mapper.customMapper.sys;

import com.crm.model.qo.sys.UserAccountQO;
import com.crm.model.vo.user.UserAccountManagerVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author yincuimei
 * @Date 2021/4/2 9:24
 */
public interface UserAccountCustomMapper {

    /**
     * 根据账号ID查询用户ID
     *
     * @param accountIds --账号ID集合
     * @return
     * @author yincuimei
     */
    List<String> selectUserIdListByAccountIds(@Param("accountIds") List<String> accountIds);

    /**
     * 给定筛选条件查询用户信息列表
     *
     * @param userAccountQO 筛选条件
     * @param toString      排序条件
     * @param b             是否超管
     * @return
     * @Author renshaorong
     * @Date 2021/4/7
     */
    List<UserAccountManagerVO> selectAllUserAccountList(@Param("userAccountQO") UserAccountQO userAccountQO,
                                                        @Param("toString") String toString,
                                                        @Param("b") boolean b);

    /**
     * 根据用户名和账号查询账号是否存在
     *
     * @param userName
     * @param userAccount
     * @return
     */
    UserAccountManagerVO selectUserAccountCount(@Param("userName") String userName, @Param("userAccount") String userAccount, @Param("companyId") String companyId);

    /**
     * 根据账号id物理删除
     *
     * @param accountId
     */
    void deleteUserAccountById(@Param("accountId") String accountId);

    /**
     * 根据用户名和公司id查询账号信息
     *
     * @param createName
     * @param companyId
     * @return
     */
    UserAccountManagerVO selectUserAccountByNameAndCompanyId(@Param("name") String createName, @Param("companyId") String companyId);

    /**
     * 根据公司查询离职用户
     *
     * @param companyId
     * @return
     */
    List<UserAccountManagerVO> selectLeaveUserAccountByCompanyId(@Param("companyId") String companyId);

    /**
     * 根据公司id获取在职且未禁用账号列表
     *
     * @Author renshaorong
     * @Date 2021/7/13
     */
    List<UserAccountManagerVO> getAbleAccountListByCompanyId(String companyId);


    /**
     * @Description: 获取所有在职且未禁用账号列表
     * @Param: []
     * @Return: java.util.List<com.crm.model.entity.sys.UserAccount>
     * @Author: lixq-f
     * @Date: 2021/7/27
     **/
    List<UserAccountManagerVO> getAllUsedAccountList();

    /**
     * 根据邮箱查询账号信息
     *
     * @param email 邮箱
     * @param email 邮箱
     * @return {@link {com.crm.model.vo.user.UserAccountManagerVO}}
     * @Author pym
     * @Date 2021/7/29 15:27
     */
    List<UserAccountManagerVO> getUserAccountByEmail(@Param("email") String email);

    /**
     * 查询用户
     *
     * @return
     */
    List<UserAccountManagerVO> selectUserList(@Param("companyId") String companyId, @Param("accountId") String accountId);

    /**
     * 根据公司Id，司龄查询accountId
     */
    List<String> getAccountIdByCompanyIdAndSeniority(@Param("companyId") String companyId, @Param("seniority") String seniority);

    /**
     * 查询用户信息表中包含的所有司龄类型
     */
    List<String> getSeniority();


}
